﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Intelsi.Entity;
using Microsoft.Practices.Unity;
using Intelsi.BusinessLogic;



namespace Intelsi.WB
{
    public partial class FrmDevolucion : System.Web.UI.Page
    {
        [Dependency]
        public IPedidoBL pedidoBl { get; set; }

        [Dependency]
        public IDevolucionBL devolucionBL { get; set; }

        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

                string userName = HttpContext.Current.User.Identity.Name;
                var trabajador = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);

                string cargo = trabajador.Cargo;

                if (cargo == "Almacenero" || cargo == "Gerente")
                {

                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                                   "mensaje",
                                      "<script type=\"text/javascript\">" +
                                         "alert(\"Usted No tiene Los Permiso Nesesarios Para esto\");" +
                                         "document.location=('Default.aspx');" +
                                           "</script>", false);


                }
               
                

            }

        }

        private void BindCargarPedido(PedidoDTO pedido)
        {
            string userName = HttpContext.Current.User.Identity.Name;
            var trabajador = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);


            hdAlamacenero.Value = trabajador.IdTrabajador.ToString();
            txtAlamacenero.Text = trabajador.Ape_Nomb;
            txtDniAlamacenero.Text = trabajador.DNI;
            txtCelular.Text = trabajador.Celular;
            txtNumFotochekalacenero.Text = trabajador.NumFotocheck;

            txtFechaDevolucion.Text =DateTime.Now.ToShortDateString();

            hfSupervisor.Value = pedido.IdSupervisor.ToString();
            txtNombreSupervisor.Text = pedido.NombreSuper;
            txtDniSupervisor.Text = pedido.dniSuper;
            txtnumFotochetSupervisor.Text = pedido.numFotochSuper;
            txtceluarsupervi.Text = pedido.celularSuper;

            txtDescripcionProyecto.Text = pedido.Descripcion;
            txtOrdenServicio.Text = pedido.ordenServicio;
            txtEmpresa.Text = pedido.empresa;

            GrillaPedido.DataSource = pedido.DetallePedido;
            GrillaPedido.DataBind();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            int idPedido = Int32.Parse(txtNumPedido.Text);

            var pedido = pedidoBl.GetfromPedidoByIdPedidodev(idPedido);

           


            if (pedido != null)
            { 
                
                 BindCargarPedido(pedido);
                BloquearCampos();
                GrillaPedido.Visible = true;
                  
            
    
            
            }

            else
            {
                 Page.ClientScript.RegisterStartupScript(this.GetType(),
                            "mensaje",
                               "<script type=\"text/javascript\">" +
                                  "alert(\"El estado de Pedido no es entregado ó No existe \");" +
                               "</script>", false);

                 ClearCampos();
            }

        }

        private void ClearCampos()
        {
            txtAlamacenero.Text = "";
            txtceluarsupervi.Text = "";
            txtCelular.Text = "";
            txtDescripcionProyecto.Text = "";
            txtDniAlamacenero.Text = "";
            txtDniSupervisor.Text = "";
            txtEmpresa.Text = "";
            txtFechaDevolucion.Text = "";
            txtNombreSupervisor.Text = "";
            txtNumFotochekalacenero.Text = "";
            txtnumFotochetSupervisor.Text = "";
            txtNumPedido.Text = "";
            txtOrdenServicio.Text = "";
            txtOrdenServicio.Text = "";
            GrillaPedido.Visible = false;
        }

        

        private void BloquearCampos()
        {
            txtAlamacenero.Enabled = false;
            txtceluarsupervi.Enabled = false;
            txtCelular.Enabled = false;
            txtDescripcionProyecto.Enabled = false;
            txtDniAlamacenero.Enabled = false;
            txtDniSupervisor.Enabled = false;
            txtEmpresa.Enabled = false;
            txtFechaDevolucion.Enabled = false;
            txtNombreSupervisor.Enabled = false;
            txtNumFotochekalacenero.Enabled = false;
            txtnumFotochetSupervisor.Enabled = false;
            //txtNumPedido.Enabled = false;
            txtOrdenServicio.Enabled = false;
            txtOrdenServicio.Enabled = false;
        }



        private DevolucionDTO registarrevolucion(PedidoDTO pedido)
        {
            Intelsi.Entity.DevolucionDTO newdevolucion = new DevolucionDTO();
           // Intelsi.Entity.DetalleDevolucion detalledevo = new DetalleDevolucion();

            newdevolucion.IdPedido = Int32.Parse(txtNumPedido.Text);
            newdevolucion.FechaDevolucion = DateTime.Parse(txtFechaDevolucion.Text);
            newdevolucion.IdSupervisor = Int32.Parse(hfSupervisor.Value);
            newdevolucion.IdAlmacenero = Int32.Parse(hdAlamacenero.Value);



            foreach (GridViewRow item in GrillaPedido.Rows)
            {
                CheckBox chekbox = item.FindControl("select") as CheckBox;
                TextBox cantidad = item.FindControl("txtcantidadDevolver") as TextBox;
                TextBox cometario = item.FindControl("txtComentario") as TextBox;
                DropDownList lista = item.FindControl("ListaEstado") as DropDownList;

                DetalleDevolucionDTO detalledevo = new DetalleDevolucionDTO();

                if (chekbox.Checked == true)
                {
                    
                    detalledevo.IdProducto = pedido.DetallePedido[item.RowIndex].IdProducto;
                    detalledevo.CantidadEntregada = Convert.ToInt32(cantidad.Text);
                    detalledevo.estado = lista.SelectedValue.ToString();
                    detalledevo.comentario = cometario.Text;

                    newdevolucion.DetalleDevolucion.Add(detalledevo);
                }

               
            }


            return newdevolucion;
        }

        

        protected void btnGuardar_Click1(object sender, EventArgs e)
        {
            int idPedido = Int32.Parse(txtNumPedido.Text);

            var pedido = pedidoBl.GetfromPedidoByIdPedidodev(idPedido);

            var devolucion = registarrevolucion(pedido);

            devolucionBL.RegistarDevolucion(devolucion);

            pedidoBl.cambiarEstadoPedido(pedido);

            Page.ClientScript.RegisterStartupScript(this.GetType(),
                           "mensaje",
                              "<script type=\"text/javascript\">" +
                                 "alert(\"El Pedido se ha Registador Correctamente \");" +
                                 "document.location=('FrmListaDevoluciones.aspx');" +
                                   "</script>", false);



        }

    }


}